import wepy from 'wepy'

/**
 * let 声明变量
 * api:async(options)=>{} 创建一个叫api的方法 定义为async (options) 系统自带的，包含的包的参数列表。说白了就是个形参
 * @type {string}
 */
let host = 'http://laravel.liutong.pro/api/'
let util = {
  // 请求方法
  api: async (options) => {
    // console.log(options)
    options.url = host + options.url
    // console.log(options)
    wepy.showLoading({
      title: '数据加载中...'
    })
    let response = await wepy.request(options)
    if (response.statusCode === 200) {
      // console.log(response)
      wepy.hideLoading()
      return response
    }
  },
  // 登录方法
  login: async (data) => {
    let result = await util.api({url: 'login', method: 'POST', data: data})
    // console.log(result)
    if (result.statusCode === 200) {
      return result
    }
  },
  // 获得令牌方法
  getToken() {
    // 手册wx.getStorageSync(KEY)
    let token = wepy.getStorageSync('token')
    // console.log(token)
    if (token) {
      if (new Date().getTime() < token.addtime + token.expires_in * 1000) {
        // console.log(token)
        return token.access_token
      } else {
        return null
      }
    }
    return null
  },
  // 需要验证请求方法,因为下面的方法需要
  authApi: async (options) => {
    // 判读这个空对象中有没有这个header属性,如果没有,给它设置一个空对象
    options.header = options.header ? options.header : {}
    // 向请求数据中的header头部信息中添加令牌值
    options.header.Authorization = 'Bearer ' + util.getToken()
    return await util.api(options)
  },
  // 获得已登录用户的信息方法
  userInfo: async () => {
    let result = await util.authApi({url: 'me'})
    if (result.statusCode === 200) {
      return result.data
    }
  },
  // 退出登录方法
  logout: async () => {
    let result = await util.authApi({url: 'logout'})
    return result
    if (result.statusCode === 200) {
      // 从本地缓存中同步移除指定 key 。
      // 原本为:wx:removeStorageSync
      wepy.removeStorageSync('token')
      return result
    }
  }
}
export default util
